///当浏览器完成 HTML 文档的解析（即 DOM 树已经构建完成）后，就会触发 DOMContentLoaded 事件。
///它比 window.onload 更早触发，因为 window.onload 会等到页面上所有资源（包括图片、样式、脚本等）都加载完成后才触发
let port = null;
document.addEventListener('DOMContentLoaded', function () {
    // 获取设置按钮和下拉框
    const settingsDropdown = document.getElementById('settings-dropdown');
    settingsDropdown.addEventListener('click', (event) => {
        event.stopPropagation(); // 阻止下拉框内部的点击事件冒泡
        const actionText = event.target.textContent.trim(); // 获取点击的文本
        if (actionText === "查询") {
            MyAPI.popupWindow('config.html', 300, 540, 0x01);
        } else if (actionText === "修改") {
            MyAPI.popupWindow('config.html', 300, 540, 0x04);
        } else if (actionText  === "修改值"){
            MyAPI.popupWindow('config.html', 300, 540, 0x05);
        }
    });

    // 点击页面其他区域时隐藏下拉框
    document.addEventListener('click', () => {
        settingsDropdown.style.display = 'none';
    });

    const buttons = document.getElementsByClassName('ml_button_item');
    Array.from(buttons).forEach((element, index) => {
        element.addEventListener('click', async function (event) {
            event.stopPropagation(); // 阻止事件冒泡

            // 如果下拉框显示，则隐藏下拉框
            if (settingsDropdown.style.display === 'block') {
                settingsDropdown.style.display = 'none';
                return; // 直接返回，不执行后续逻辑
            }

            // 如果下拉框未显示，则执行按钮的具体逻辑
            var a = `第 ${index + 1}个按钮：${element.textContent}被点击`;
            switch (element.textContent) {
                case "设置":
                    if (settingsDropdown.style.display === 'block') {
                        settingsDropdown.style.display = 'none';
                    } else {
                        settingsDropdown.style.display = 'block';
                    }
                    break;
                case "固件升级":
                    if (!port) {
                        alert(`请先连接串口，并设置端口信息后再进行固件升级！`);
                    }
                    break;
                case "启动":
                    if (!port) {
                        alert(`请先连接串口，并设置端口信息后再启动！`);
                    } else {
                        serialAPI.sendDataWithList(0xFF, 0x02);
                    }
                    break;
                case "停止":
                    serialAPI.sendDataWithList(0xFF, 0x03);
                    break;
                case "从文件加载数据":
                    const path = await MyAPI.toBrowseFiles();
                    if (path != null) {
                        const result = await MyAPI.readFiles(path);
                        MyAPI.popupWindow('viewer.html', null, null, result);
                    }
                    break;
                case "帮助":
                    const app_version = await MyAPI.app_version;
                    alert(`app: ${app_version}
                          node: ${MyAPI.node_version}
                         electron: ${MyAPI.electron_version}
                         chorme: ${MyAPI.chrome_version}`);
                    break;
                case '日志':
                    MyAPI.openLogin();
                    break;
                default:
                    break;
            }
            console.log(`${a}`);
        });
    });
});

///监听打开端口结果
serialAPI.listenPort(async (_, result) => {
    if (!result.error) {
        if (result.isopen) {
            //端口 已经 打开
            if (result.msg) {
                ///显示当前连接端口
                port = await serialAPI.currentPort();
            }
        } else {
            port = null;
        }
    }
});


// 加载本地 常亮配置
async function loadConfig() {

    document.documentElement.style.setProperty("--theme-color", window.globalConstants.THEME_COLOR);
    document.documentElement.style.setProperty("--border-width", `"${window.globalConstants.APP_NAME}"`);
}
// 动态注入模块
// function loadModule(moduleId, src) {
//     const moduleContainer = document.getElementById(moduleId);
//     const iframe = document.createElement('iframe');
//     iframe.src = src;
//     iframe.frameBorder = "0";
//     moduleContainer.appendChild(iframe);
// }
// window.loadModule = loadModule;